
 1000  *SAVE BUTTERILLS.MUL
 1010  *--------------------------------
 1020  * 16 BIT MULTIPLY FOR 65802
 1030  * MULTIPLIES A BY B
 1040  * LEAVES ANSWER IN A & B
 1050  *--------------------------------
 1060  A      .EQ 0,1      MULTIPLIER, PRODUCT-LO
 1070  B      .EQ 2,3      MULTIPLICAND, PRODUCT-HI
 1080  *--------------------------------
 1090  *   TIMING:  B=$0000 -- 27 CYCLES
 1100  *            A=$0000 -- 335 CYCLES
 1110  *            A=$FFFF -- 383 CYCLES
 1120  *   (INCLUDING JSR AND RTS)
 1130  *--------------------------------
 1140         .OP 65802
 1150  MULT16
 1160         CLC          ENTER FROM 6502
 1170         XCE
 1180         REP #$20
 1190         LDA B        IF B ZERO,
 1200         BEQ .90      THEN BY-PASS
 1210         DEC B
 1220         LDA ##0000
 1230         LDX #16      FOR 16 BITS
 1240         CLC          FOR 17'TH CYCLE
 1250  .10    ROR          ROLL OUT PRODUCT BIT
 1260         ROR A        ROLL IN 'PLIER BIT
 1270         BCC .20
 1280         ADC B
 1290  .20    DEX
 1300         BPL .10      CYCLES 17 TIMES
 1310         STA B
 1320  .30    SEC          EXIT TO 6502
 1330         XCE
 1340         RTS
 1350  .90    STA A        PROCEDURE FOR B=0
 1360         BRA .30
 1370  *--------------------------------

